home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 November: Tool Chest / Dev.CD Nov 98 TC.toast / Tool Chest / Development Kits / MPW etc. / MPW-GM / Interfaces&Libraries / Interfaces / CIncludes / QD3DStyle.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-02-17  |  10.6 KB  |  385 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        QD3DStyle.h
  3.  
  4.      Contains:    Q3Style types and routines                                         
  5.  
  6.      Version:    Technology:    Quickdraw 3D 1.5.4
  7.                  Release:    Universal Interfaces 3.1
  8.  
  9.      Copyright:    © 1995-1998 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. */
  18. #ifndef __QD3DSTYLE__
  19. #define __QD3DSTYLE__
  20.  
  21. #ifndef __QD3D__
  22. #include <QD3D.h>
  23. #endif
  24.  
  25.  
  26.  
  27. #if PRAGMA_ONCE
  28. #pragma once
  29. #endif
  30.  
  31. #ifdef __cplusplus
  32. extern "C" {
  33. #endif
  34.  
  35. #if PRAGMA_IMPORT
  36. #pragma import on
  37. #endif
  38.  
  39. #if PRAGMA_STRUCT_ALIGN
  40.     #pragma options align=power
  41. #elif PRAGMA_STRUCT_PACKPUSH
  42.     #pragma pack(push, 2)
  43. #elif PRAGMA_STRUCT_PACK
  44.     #pragma pack(2)
  45. #endif
  46.  
  47. #if PRAGMA_ENUM_ALWAYSINT
  48.     #pragma enumsalwaysint on
  49. #elif PRAGMA_ENUM_OPTIONS
  50.     #pragma option enum=int
  51. #elif PRAGMA_ENUM_PACK
  52.     #if __option(pack_enums)
  53.         #define PRAGMA_ENUM_PACK__QD3DSTYLE__
  54.     #endif
  55.     #pragma options(!pack_enums)
  56. #endif
  57.  
  58. /******************************************************************************
  59.  **                                                                             **
  60.  **                    Style Base Class Routines                                 **
  61.  **                                                                             **
  62.  *****************************************************************************/
  63. EXTERN_API_C( TQ3ObjectType )
  64. Q3Style_GetType                    (TQ3StyleObject         style);
  65.  
  66. EXTERN_API_C( TQ3Status )
  67. Q3Style_Submit                    (TQ3StyleObject         style,
  68.                                  TQ3ViewObject             view);
  69.  
  70.  
  71. /******************************************************************************
  72.  **                                                                             **
  73.  **                                 Subdivision                                 **
  74.  **                                                                             **
  75.  *****************************************************************************/
  76.  
  77. enum TQ3SubdivisionMethod {
  78.     kQ3SubdivisionMethodConstant = 0,
  79.     kQ3SubdivisionMethodWorldSpace = 1,
  80.     kQ3SubdivisionMethodScreenSpace = 2
  81. };
  82. typedef enum TQ3SubdivisionMethod TQ3SubdivisionMethod;
  83.  
  84.  
  85.  
  86. struct TQ3SubdivisionStyleData {
  87.     TQ3SubdivisionMethod             method;
  88.     float                             c1;
  89.     float                             c2;
  90. };
  91. typedef struct TQ3SubdivisionStyleData    TQ3SubdivisionStyleData;
  92. EXTERN_API_C( TQ3StyleObject )
  93. Q3SubdivisionStyle_New            (const TQ3SubdivisionStyleData * data);
  94.  
  95. EXTERN_API_C( TQ3Status )
  96. Q3SubdivisionStyle_Submit        (const TQ3SubdivisionStyleData * data,
  97.                                  TQ3ViewObject             view);
  98.  
  99. EXTERN_API_C( TQ3Status )
  100. Q3SubdivisionStyle_SetData        (TQ3StyleObject         subdiv,
  101.                                  const TQ3SubdivisionStyleData * data);
  102.  
  103. EXTERN_API_C( TQ3Status )
  104. Q3SubdivisionStyle_GetData        (TQ3StyleObject         subdiv,
  105.                                  TQ3SubdivisionStyleData * data);
  106.  
  107.  
  108. /******************************************************************************
  109.  **                                                                             **
  110.  **                                Pick ID                                         **
  111.  **                                                                             **
  112.  *****************************************************************************/
  113. EXTERN_API_C( TQ3StyleObject )
  114. Q3PickIDStyle_New                (unsigned long             id);
  115.  
  116. EXTERN_API_C( TQ3Status )
  117. Q3PickIDStyle_Submit            (unsigned long             id,
  118.                                  TQ3ViewObject             view);
  119.  
  120. EXTERN_API_C( TQ3Status )
  121. Q3PickIDStyle_Get                (TQ3StyleObject         pickIDObject,
  122.                                  unsigned long *        id);
  123.  
  124. EXTERN_API_C( TQ3Status )
  125. Q3PickIDStyle_Set                (TQ3StyleObject         pickIDObject,
  126.                                  unsigned long             id);
  127.  
  128.  
  129. /******************************************************************************
  130.  **                                                                             **
  131.  **                                Pick Parts                                     **
  132.  **                                                                             **
  133.  *****************************************************************************/
  134.  
  135. enum TQ3PickPartsMasks {
  136.     kQ3PickPartsObject            = 0,
  137.     kQ3PickPartsMaskFace        = 1 << 0,
  138.     kQ3PickPartsMaskEdge        = 1 << 1,
  139.     kQ3PickPartsMaskVertex        = 1 << 2
  140. };
  141. typedef enum TQ3PickPartsMasks TQ3PickPartsMasks;
  142.  
  143.  
  144. typedef unsigned long                     TQ3PickParts;
  145. EXTERN_API_C( TQ3StyleObject )
  146. Q3PickPartsStyle_New            (TQ3PickParts             parts);
  147.  
  148. EXTERN_API_C( TQ3Status )
  149. Q3PickPartsStyle_Submit            (TQ3PickParts             parts,
  150.                                  TQ3ViewObject             view);
  151.  
  152. EXTERN_API_C( TQ3Status )
  153. Q3PickPartsStyle_Get            (TQ3StyleObject         pickPartsObject,
  154.                                  TQ3PickParts *            parts);
  155.  
  156. EXTERN_API_C( TQ3Status )
  157. Q3PickPartsStyle_Set            (TQ3StyleObject         pickPartsObject,
  158.                                  TQ3PickParts             parts);
  159.  
  160.  
  161. /******************************************************************************
  162.  **                                                                             **
  163.  **                        Receive Shadows                                         **
  164.  **                                                                             **
  165.  *****************************************************************************/
  166. EXTERN_API_C( TQ3StyleObject )
  167. Q3ReceiveShadowsStyle_New        (TQ3Boolean             receives);
  168.  
  169. EXTERN_API_C( TQ3Status )
  170. Q3ReceiveShadowsStyle_Submit    (TQ3Boolean             receives,
  171.                                  TQ3ViewObject             view);
  172.  
  173. EXTERN_API_C( TQ3Status )
  174. Q3ReceiveShadowsStyle_Get        (TQ3StyleObject         styleObject,
  175.                                  TQ3Boolean *            receives);
  176.  
  177. EXTERN_API_C( TQ3Status )
  178. Q3ReceiveShadowsStyle_Set        (TQ3StyleObject         styleObject,
  179.                                  TQ3Boolean             receives);
  180.  
  181.  
  182. /******************************************************************************
  183.  **                                                                             **
  184.  **                            Fill Styles                                         **
  185.  **                                                                             **
  186.  *****************************************************************************/
  187.  
  188. enum TQ3FillStyle {
  189.     kQ3FillStyleFilled            = 0,
  190.     kQ3FillStyleEdges            = 1,
  191.     kQ3FillStylePoints            = 2
  192. };
  193. typedef enum TQ3FillStyle TQ3FillStyle;
  194.  
  195.  
  196. EXTERN_API_C( TQ3StyleObject )
  197. Q3FillStyle_New                    (TQ3FillStyle             fillStyle);
  198.  
  199. EXTERN_API_C( TQ3Status )
  200. Q3FillStyle_Submit                (TQ3FillStyle             fillStyle,
  201.                                  TQ3ViewObject             view);
  202.  
  203. EXTERN_API_C( TQ3Status )
  204. Q3FillStyle_Get                    (TQ3StyleObject         styleObject,
  205.                                  TQ3FillStyle *            fillStyle);
  206.  
  207. EXTERN_API_C( TQ3Status )
  208. Q3FillStyle_Set                    (TQ3StyleObject         styleObject,
  209.                                  TQ3FillStyle             fillStyle);
  210.  
  211.  
  212. /******************************************************************************
  213.  **                                                                             **
  214.  **                            Backfacing Styles                                 **
  215.  **                                                                             **
  216.  *****************************************************************************/
  217.  
  218. enum TQ3BackfacingStyle {
  219.     kQ3BackfacingStyleBoth        = 0,
  220.     kQ3BackfacingStyleRemove    = 1,
  221.     kQ3BackfacingStyleFlip        = 2
  222. };
  223. typedef enum TQ3BackfacingStyle TQ3BackfacingStyle;
  224.  
  225. EXTERN_API_C( TQ3StyleObject )
  226. Q3BackfacingStyle_New            (TQ3BackfacingStyle     backfacingStyle);
  227.  
  228. EXTERN_API_C( TQ3Status )
  229. Q3BackfacingStyle_Submit        (TQ3BackfacingStyle     backfacingStyle,
  230.                                  TQ3ViewObject             view);
  231.  
  232. EXTERN_API_C( TQ3Status )
  233. Q3BackfacingStyle_Get            (TQ3StyleObject         backfacingObject,
  234.                                  TQ3BackfacingStyle *    backfacingStyle);
  235.  
  236. EXTERN_API_C( TQ3Status )
  237. Q3BackfacingStyle_Set            (TQ3StyleObject         backfacingObject,
  238.                                  TQ3BackfacingStyle     backfacingStyle);
  239.  
  240.  
  241. /******************************************************************************
  242.  **                                                                             **
  243.  **                            Interpolation Types                                 **
  244.  **                                                                             **
  245.  *****************************************************************************/
  246.  
  247. enum TQ3InterpolationStyle {
  248.     kQ3InterpolationStyleNone    = 0,
  249.     kQ3InterpolationStyleVertex    = 1,
  250.     kQ3InterpolationStylePixel    = 2
  251. };
  252. typedef enum TQ3InterpolationStyle TQ3InterpolationStyle;
  253.  
  254. EXTERN_API_C( TQ3StyleObject )
  255. Q3InterpolationStyle_New        (TQ3InterpolationStyle     interpolationStyle);
  256.  
  257. EXTERN_API_C( TQ3Status )
  258. Q3InterpolationStyle_Submit        (TQ3InterpolationStyle     interpolationStyle,
  259.                                  TQ3ViewObject             view);
  260.  
  261. EXTERN_API_C( TQ3Status )
  262. Q3InterpolationStyle_Get        (TQ3StyleObject         interpolationObject,
  263.                                  TQ3InterpolationStyle * interpolationStyle);
  264.  
  265. EXTERN_API_C( TQ3Status )
  266. Q3InterpolationStyle_Set        (TQ3StyleObject         interpolationObject,
  267.                                  TQ3InterpolationStyle     interpolationStyle);
  268.  
  269.  
  270. /******************************************************************************
  271.  **                                                                             **
  272.  **                                Highlight Style                                 **
  273.  **                                                                             **
  274.  *****************************************************************************/
  275. EXTERN_API_C( TQ3StyleObject )
  276. Q3HighlightStyle_New            (TQ3AttributeSet         highlightAttribute);
  277.  
  278. EXTERN_API_C( TQ3Status )
  279. Q3HighlightStyle_Submit            (TQ3AttributeSet         highlightAttribute,
  280.                                  TQ3ViewObject             view);
  281.  
  282. EXTERN_API_C( TQ3Status )
  283. Q3HighlightStyle_Get            (TQ3StyleObject         highlight,
  284.                                  TQ3AttributeSet *        highlightAttribute);
  285.  
  286. EXTERN_API_C( TQ3Status )
  287. Q3HighlightStyle_Set            (TQ3StyleObject         highlight,
  288.                                  TQ3AttributeSet         highlightAttribute);
  289.  
  290.  
  291. /******************************************************************************
  292.  **                                                                             **
  293.  **                            FrontFacing Direction Styles                     **
  294.  **                                                                             **
  295.  *****************************************************************************/
  296.  
  297. enum TQ3OrientationStyle {
  298.     kQ3OrientationStyleCounterClockwise = 0,
  299.     kQ3OrientationStyleClockwise = 1
  300. };
  301. typedef enum TQ3OrientationStyle TQ3OrientationStyle;
  302.  
  303. EXTERN_API_C( TQ3StyleObject )
  304. Q3OrientationStyle_New            (TQ3OrientationStyle     frontFacingDirection);
  305.  
  306. EXTERN_API_C( TQ3Status )
  307. Q3OrientationStyle_Submit        (TQ3OrientationStyle     frontFacingDirection,
  308.                                  TQ3ViewObject             view);
  309.  
  310. EXTERN_API_C( TQ3Status )
  311. Q3OrientationStyle_Get            (TQ3StyleObject         frontFacingDirectionObject,
  312.                                  TQ3OrientationStyle *    frontFacingDirection);
  313.  
  314. EXTERN_API_C( TQ3Status )
  315. Q3OrientationStyle_Set            (TQ3StyleObject         frontFacingDirectionObject,
  316.                                  TQ3OrientationStyle     frontFacingDirection);
  317.  
  318.  
  319. /******************************************************************************
  320.  **                                                                             **
  321.  **                                AntiAlias Style                                 **
  322.  **                                                                             **
  323.  *****************************************************************************/
  324.  
  325. enum TQ3AntiAliasModeMasks {
  326.     kQ3AntiAliasModeMaskEdges    = 1 << 0,
  327.     kQ3AntiAliasModeMaskFilled    = 1 << 1
  328. };
  329. typedef enum TQ3AntiAliasModeMasks TQ3AntiAliasModeMasks;
  330.  
  331. typedef unsigned long                     TQ3AntiAliasMode;
  332.  
  333. struct TQ3AntiAliasStyleData {
  334.     TQ3Switch                         state;
  335.     TQ3AntiAliasMode                 mode;
  336.     float                             quality;
  337. };
  338. typedef struct TQ3AntiAliasStyleData    TQ3AntiAliasStyleData;
  339. EXTERN_API_C( TQ3StyleObject )
  340. Q3AntiAliasStyle_New            (const TQ3AntiAliasStyleData * data);
  341.  
  342. EXTERN_API_C( TQ3Status )
  343. Q3AntiAliasStyle_Submit            (const TQ3AntiAliasStyleData * data,
  344.                                  TQ3ViewObject             view);
  345.  
  346. EXTERN_API_C( TQ3Status )
  347. Q3AntiAliasStyle_GetData        (TQ3StyleObject         styleObject,
  348.                                  TQ3AntiAliasStyleData * data);
  349.  
  350. EXTERN_API_C( TQ3Status )
  351. Q3AntiAliasStyle_SetData        (TQ3StyleObject         styleObject,
  352.                                  const TQ3AntiAliasStyleData * data);
  353.  
  354.  
  355.  
  356.  
  357. #if PRAGMA_ENUM_ALWAYSINT
  358.     #pragma enumsalwaysint reset
  359. #elif PRAGMA_ENUM_OPTIONS
  360.     #pragma option enum=reset
  361. #elif defined(PRAGMA_ENUM_PACK__QD3DSTYLE__)
  362.     #pragma options(pack_enums)
  363. #endif
  364.  
  365. #if PRAGMA_STRUCT_ALIGN
  366.     #pragma options align=reset
  367. #elif PRAGMA_STRUCT_PACKPUSH
  368.     #pragma pack(pop)
  369. #elif PRAGMA_STRUCT_PACK
  370.     #pragma pack()
  371. #endif
  372.  
  373. #ifdef PRAGMA_IMPORT_OFF
  374. #pragma import off
  375. #elif PRAGMA_IMPORT
  376. #pragma import reset
  377. #endif
  378.  
  379. #ifdef __cplusplus
  380. }
  381. #endif
  382.  
  383. #endif /* __QD3DSTYLE__ */
  384.  
  385.